package com.starfactory.customer.shared.enums;

import lombok.Getter;
import lombok.AllArgsConstructor;
import java.util.List;
import java.util.Arrays;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;

/** 主机告警类型枚举 */
@Getter
@AllArgsConstructor
@Slf4j
public enum HostAlertTypeEnum {

  /** CPU使用过高告警 */
  CPU_HIGH_LOAD("CPU使用过高告警", "cpuUsageRate"),
  /** 内存使用过高告警 */
  MEMORY_HIGH_LOAD("内存使用过高告警", "memoryUsageRate"),
  /** 磁盘使用过高告警 */
  DISK_HIGH_LOAD("磁盘使用过高告警", "diskUsageRate"),
  /** 网络输入带宽告警 */
  NETWORK_HIGH_LOAD("网络输入带宽告警", "netInput"),
  /** 网络输出带宽告警 */
  NETWORK_HIGH_PACKET_LOSS_AAA("网络输出带宽告警", "netOutput"),
  /** 网络丢包率告警(新增) */
  TEST_NETWORK_PACKET_LOSS("网络丢包率告警", "netPacketLoss");



  /** 告警名称 */
  private final String name;

  /** 阈值类型 */
  private final String thresholdType;


  /**
   * 获取所有告警名称的集合
   *
   * @return 告警名称集合
   */
  public static List<String> getList() {
    return Arrays.stream(values()).map(HostAlertTypeEnum::getName).collect(Collectors.toList());
  }

  /**
   * 根据告警名称获取告警类型
   *
   * @param name 告警名称
   * @return 告警类型
   */
  public static HostAlertTypeEnum getByName(String name) {
    return Arrays.stream(values()).filter(e -> e.getName().equals(name)).findFirst().orElse(null);
  }
}
